package com.jsg.sl651.message.parser.impl;

import com.jsg.sl651.constant.EncodingElementIdentifier;
import com.jsg.sl651.entity.data.Element;
import com.jsg.sl651.enums.CommunicationMessageType;
import com.jsg.sl651.message.parser.Parser;

/**
 * 默认的解析器 不会做任何操作，是什么字节就返回什么字节
 */
public class DefaultParser implements Parser<byte[]> {
    /**
     * 解析Hex模式下的数据
     * <p>方法核心</p>
     * <ul>
     *     <li>解析该字节数组</li>
     *     <li>数据生成相应的数据对象{@link CommunicationMessageType}</li>
     * </ul>
     *
     * @param element 数据类型定义 {@link EncodingElementIdentifier.EncodingElement}
     * @param bytes   字节数组
     * @return 解析出来的数据对象
     */
    @Override
    public Element<byte[]> parserHexImpl(EncodingElementIdentifier.EncodingElement element, byte[] bytes) throws Exception {
        return new Element<>(bytes, bytes, element);
    }

    /**
     * 解析Hex模式下的数据
     * <p>方法核心</p>
     * <ul>
     *     <li>解析该字节数组</li>
     *     <li>数据生成相应的数据对象{@link CommunicationMessageType}</li>
     * </ul>
     *
     * @param element 数据类型定义 {@link EncodingElementIdentifier.EncodingElement}
     * @param bytes   字节数组
     * @return 解析出来的数据对象
     */
    @Override
    public Element<byte[]> parserAsciiImpl(EncodingElementIdentifier.EncodingElement element, byte[] bytes) throws Exception {
        return new Element<>(bytes, bytes, element);
    }
}
